package com.action;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import com.dto.UserInfo;
import com.service.PersonalService;


@RestController
public class PersonalAction {
	
	@Autowired
	private PersonalService ps;
	
	/**
	 * @作者： 柴希金
	 * @时间：2018/4/19
	 * @功能：点击首页个人中心，判断客户是否登录再跳转
	 */
	@RequestMapping("/goPersonal.do")
	@ResponseBody
	public Map<String,Object> goPersonal(HttpSession session){
		Map<String,Object> map=new HashMap<String,Object>();
		UserInfo user=(UserInfo)session.getAttribute("userInfo");
		if(user!=null) {
			map.put("result", true);
		}else{
			map.put("result", false);
		}
		return map;
	}
	
	
	/**
	 * @作者： 柴希金
	 * @时间：2018/4/17
	 * @功能：将个人中心的数据写入数据库
	 */
	@RequestMapping("/updateUserInfoById.do")
	@ResponseBody
	public Map<String,Object> updateUserInfoById(UserInfo user,HttpSession session) {
		Map<String,Object> json=new HashMap<String,Object>();
		UserInfo sessionUser=(UserInfo)session.getAttribute("userInfo");
		String sessionU_id=sessionUser.getU_id();
		//先检查名字是否存在
		String sessionU_name=sessionUser.getU_name();
		String u_name=user.getU_name();
		int n;
		if(u_name.equals(sessionU_name)) {
			n=1;
		}else {
			n=0;
		}
		int m=ps.getCountByName(u_name);
		if(m==n) {
			//不存在用户名重复的情况下进行修改
			int i=ps.updateUserInfoById(user);
			if(i==1) {
				//更新session数据
				UserInfo user2=ps.getUserInfoById(sessionU_id);
				session.removeAttribute("userInfo");
				session.setAttribute("userInfo", user2);
				json.put("result", true);
			}else {
				json.put("result", false);
			}
		}else {
			json.put("result", "errorName");
		}
		return json;
	}
	
	/**
	 * @作者： 柴希金
	 * @时间：2018/4/18
	 * @功能：更换绑定手机（向原绑定手机发送验证）
	 */
	@RequestMapping("/intoCode.do")
	public Map<String,Object> intoCode(HttpSession session){
		Map<String,Object> json=new HashMap<String,Object>();
		UserInfo user=(UserInfo)session.getAttribute("userInfo");
		String phone=user.getPhone();
		int i=ps.intoCode(phone);
		if(i==1) {
			json.put("result", true);
		}else {
			json.put("result", false);
		}
		return json;
	}
	
	/**
	 * @作者： 柴希金
	 * @时间：2018/4/18
	 * @功能：更换绑定手机（核实验证码和更改绑定手机）
	 */
	@RequestMapping("/updatePhoneByCode.do")
	@ResponseBody
	public Map<String,Object> updatePhoneByCode(String code,String newphone,HttpSession session){
		Map<String,Object> json=new HashMap<String,Object>();
		UserInfo user=(UserInfo)session.getAttribute("userInfo");
		String phone=user.getPhone();
		//判断验证码是否正确
		Map<String,String> map1=new HashMap<String,String>();
		map1.put("phone", phone);
		map1.put("code", code);
		String s=ps.getPhoneByCodeAndPhone(map1);
		if(s!=null) {//验证码正确
			//新手机号是否已存在
			int n=ps.getCountByPhone(newphone);
			if(n==0){//说明不存在重复
				//更改客户的绑定手机
				String id=user.getU_id();
				UserInfo newUser=new UserInfo();
				newUser.setU_id(id);
				newUser.setPhone(newphone);
				int m=ps.updatePhoneById(newUser);
				if(m==1){
					//将更新了的客户信息存入session
					user.setPhone(newphone);
					session.setAttribute("userInfo", user);
					json.put("result", true);
				}else{
					json.put("result", false);
				}
			}else {
				json.put("result","errorNewphone");
			}
		}else{
			json.put("result", "errorCode");
		}
		return json;
	}
	
	/**
	 * @作者： 柴希金
	 * @时间：2018/4/18
	 * @功能：修改密码（根据用户名查询密码是否正确）
	 */
	@RequestMapping("/updatePasswordByName.do")
	@ResponseBody
	public Map<String,Object> updatePasswordByName(UserInfo user,String newpassword,HttpSession session){
		Map<String,Object> json=new HashMap<String,Object>();
		UserInfo sessionUser=(UserInfo)session.getAttribute("userInfo");
		String sessionPassword=sessionUser.getPwd();
		String password=user.getPwd();
		if(password.equals(sessionPassword)){
			user.setPwd(newpassword);
			int i=ps.updatePasswordByName(user);
			if(i==1){
				sessionUser.setPwd(newpassword);
				session.setAttribute("userInfo", sessionUser);
				json.put("result","ok");
			}else {
				json.put("result","fail");
			}
		}else {
			json.put("result","errorPassword");
		}
		return json;
	}
	
}
